package com.naiterui.ehp.bs.doctor.service;

import com.naiterui.common.repository.page.PageParamVO;
import com.naiterui.common.repository.page.PageVO;
import com.naiterui.ehp.bp.support.exception.BusinessException;
import com.naiterui.ehp.bs.doctor.vo.ConsultChargePatientGroupDetailVO;
import com.naiterui.ehp.bs.doctor.vo.ConsultOrderListVO;
import com.naiterui.ehp.bs.doctor.vo.ConsultSessionParamVO;
import com.naiterui.ehp.bs.doctor.vo.ConsultSessionVO;
import com.naiterui.ehp.bs.doctor.vo.PatientGroupVo;

import java.util.List;

public interface IDrMessageConsultChargeService {

    /**
     * 根据医生id与患者id查询诊金
     * DrMessageConsultChargeServiceImpl.getChargeById()
     *
     * @param doctorId
     * @param patientId
     * @return
     * @Author guoyongxiang
     * @Date 2017年3月31日
     * @since 2.7.0
     */
    Integer getChargeById(Long doctorId, Long patientId);

    /**
     * 新增/更新收费金额设置
     * DrMessageConsultChargeServiceImpl.saveCharge()
     *
     * @param doctorId     医生ID
     * @param charge       收费金额
     * @param selectedAll  是否全选： SELECTED_ALL：1 全选，全选时分组与患者列表设置不生效
     * @param groupIdStr   分组ID列表英文逗号分隔，非全选时有效，该组选中时不需要指定成员ID
     * @param patientIdStr 指定患者选择，非全选时有效
     * @throws BusinessException
     * @Author guoyongxiang
     * @Date 2017年4月1日
     * @since 2.7.0
     */
    void saveCharge(Long doctorId, Integer charge, Integer selectedAll, String groupIdStr, String patientIdStr) throws BusinessException;

    /**
     * 根据医生ID获取图文咨询患者分组列表
     * IDrMessageConsultChargeService.getPatientGroups()
     *
     * @param doctorId
     * @return
     * @throws BusinessException
     * @Author guoyongxiang
     * @Date 2017年4月2日
     * @since 2.7.0
     */
    List<PatientGroupVo> getPatientGroups(Long doctorId);

    /**
     * 根据分组ID查询图文咨询患者列表
     * IDrMessageConsultChargeService.getPatientsByGroupId()
     *
     * @param groupId
     * @param doctorId
     * @return
     * @Author guoyongxiang
     * @Date 2017年4月2日
     * @since 2.7.0
     */
    List<ConsultChargePatientGroupDetailVO> getPatientsByGroupId(Long groupId, Long doctorId) throws Exception;

    PageVO<ConsultSessionVO> consultSessionList(ConsultSessionParamVO paramVO, PageParamVO pageParamVO) throws BusinessException;

    /**
     * 诊疗收入
     *
     * @param paramVO
     * @param pageParamVO
     * @return
     */
    ConsultOrderListVO consultIncome(ConsultSessionParamVO paramVO, PageParamVO pageParamVO) throws BusinessException;
}